package com.crcode.crm.dao.module;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import com.crcode.crm.bean.module.ModuleBean;
/**
 * 模块数据层接口
 * @author lxw
 * @date 2019年1月22日
 */
public interface ModuleDao extends JpaRepository<ModuleBean, Integer>, JpaSpecificationExecutor<ModuleBean> {

	/**
	 * 根据父级程序序号和模块名称查询
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @param moduleName
	 * @return
	 */
	public List<ModuleBean> findByPuuidAndModuleName(String puuid,String moduleName);
	
	/**
	 * 根据父级序号、模块名称等于，序号不等于
	 * @author lxw
	 * @date 2019年2月14日
	 * @param puuid
	 * @param moduleName
	 * @param uuid
	 * @return
	 */
	public List<ModuleBean> findByPuuidAndModuleNameAndUuidNot(String puuid,String moduleName,String uuid);
	
	/**
	 * 根据程序序号查询
	 * @author lxw
	 * @date 2019年1月22日
	 * @param uuid
	 * @return
	 */
	public ModuleBean findByUuid(String uuid);
	
	/**
	 * 根据父级程序序号查询
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @return
	 */
	public List<ModuleBean> findByPuuid(String puuid);
	
	/**
	 * 根据模块类型和父级uuid查询结果
	 * @author lxw
	 * @date 2019年1月22日
	 * @param moduleType
	 * @param puuid
	 * @return
	 */
	public List<ModuleBean> findByModuleTypeAndPuuid(Integer moduleType,String puuid);
	/**
	 * 根据父级序号 查询子集序号集合
	 * @author lxw  
	 * @date 2018年8月27日 下午3:37:39
	 * @param parentId
	 * @return
	 */
	@Query("select m.uuid from ModuleBean m where m.puuid =?1")
	public List<String> findIdByPuuid(String uuid);
	
	/**
	 * 根据父级序号集合，查询子集序号
	 * @author lxw  
	 * @date 2018年8月27日 下午3:38:33
	 * @param idl
	 * @return
	 */
	@Query("select m.uuid from ModuleBean m where m.puuid in?1")
	public List<String> findIdByParentIds(List<String> uuids);
	/**
	 * 根据程序性集删除
	 * @author lxw
	 * @date 2019年1月22日
	 * @param uuids
	 * @return
	 */
	public long deleteByUuidIn(List<String> uuids);
	
	/**
	 * 根据puuid及uuids查询结果
	 * @author lxw
	 * @date 2019年1月22日
	 * @param puuid
	 * @param uuids
	 * @return
	 */
	public List<ModuleBean> findByPuuidAndUuidIn(String puuid,List<String> uuids);
}
